LINQ তে Group By এবং Aggregates মেথড দুটি অত্যন্ত শক্তিশালী টুল, যা ডেটাকে গ্রুপ করে তার উপর বিভিন্ন ধরনের অ্যাগ্রিগেশন (যেমন গড়, যোগফল, গুণফল ইত্যাদি) অপারেশন প্রয়োগ করতে ব্যবহৃত হয়। এটি ডেটা সেটের মধ্যে সম্পর্কিত উপাদানগুলিকে একটি গ্রুপে ভাগ করে তাদের উপর গণনা করার সুবিধা দেয়।
Group By মেথডটি একটি সংগ্রহকে নির্দিষ্ট একটি কন্ডিশনের ভিত্তিতে গ্রুপ করতে ব্যবহৃত হয়। এটি একটি গ্রুপড সংগ্রহ তৈরি করে, যেখানে প্রতিটি গ্রুপের উপাদানগুলি একটি নির্দিষ্ট কন্ডিশন অনুসারে সাজানো হয়। উদাহরণস্বরূপ, আপনি একটি লিস্টকে তাদের বয়স, বিভাগ বা অন্যান্য প্রপার্টির ভিত্তিতে গ্রুপ করতে পারেন।
Query Syntax-এ Group By ব্যবহার করা হয় group
কিওয়ার্ডের মাধ্যমে। এটি একটি গ্রুপড সংগ্রহ তৈরি করে, যা গ্রুপের কন্ডিশন অনুযায়ী সাজানো হয়।
List<Person> people = new List<Person>
{
new Person { Name = "Alice", Age = 25, Department = "HR" },
new Person { Name = "Bob", Age = 30, Department = "IT" },
new Person { Name = "Charlie", Age = 35, Department = "HR" },
new Person { Name = "David", Age = 28, Department = "IT" },
new Person { Name = "Eve", Age = 22, Department = "Marketing" }
};
// বিভাগ অনুসারে গ্রুপিং
var groupedByDepartment = from person in people
group person by person.Department;
foreach (var group in groupedByDepartment)
{
Console.WriteLine($"Department: {group.Key}");
foreach (var person in group)
{
Console.WriteLine($" Name: {person.Name}, Age: {person.Age}");
}
}
এখানে, group person by person.Department
দ্বারা Department প্রপার্টির ভিত্তিতে গ্রুপ করা হয়েছে। ফলস্বরূপ, "HR", "IT", এবং "Marketing" বিভাগে থাকা ব্যক্তিদের নাম ও বয়স প্রিন্ট করা হবে।
Method Syntax-এ GroupBy() মেথডটি ব্যবহার করা হয়, যা একটি Lambda Expression গ্রহণ করে। এখানে কন্ডিশন অনুযায়ী ডেটাকে গ্রুপ করা হয়।
List<Person> people = new List<Person>
{
new Person { Name = "Alice", Age = 25, Department = "HR" },
new Person { Name = "Bob", Age = 30, Department = "IT" },
new Person { Name = "Charlie", Age = 35, Department = "HR" },
new Person { Name = "David", Age = 28, Department = "IT" },
new Person { Name = "Eve", Age = 22, Department = "Marketing" }
};
// বিভাগ অনুসারে গ্রুপিং
var groupedByDepartment = people.GroupBy(p => p.Department);
foreach (var group in groupedByDepartment)
{
Console.WriteLine($"Department: {group.Key}");
foreach (var person in group)
{
Console.WriteLine($" Name: {person.Name}, Age: {person.Age}");
}
}
এখানে, GroupBy(p => p.Department)
ব্যবহার করা হয়েছে ডেটাকে Department অনুসারে গ্রুপ করার জন্য।
Group By এর সাথে Aggregation মেথডগুলো যেমন Count, Sum, Average, Min, Max ব্যবহার করে আপনি প্রতিটি গ্রুপের উপর গণনা বা পরিসংখ্যানিক অপারেশন করতে পারেন।
List<Person> people = new List<Person>
{
new Person { Name = "Alice", Age = 25, Department = "HR" },
new Person { Name = "Bob", Age = 30, Department = "IT" },
new Person { Name = "Charlie", Age = 35, Department = "HR" },
new Person { Name = "David", Age = 28, Department = "IT" },
new Person { Name = "Eve", Age = 22, Department = "Marketing" }
};
// বিভাগ অনুসারে গ্রুপিং এবং প্রতিটি গ্রুপের সদস্য সংখ্যা বের করা
var groupedByDepartment = people.GroupBy(p => p.Department)
.Select(g => new
{
Department = g.Key,
Count = g.Count()
});
foreach (var group in groupedByDepartment)
{
Console.WriteLine($"Department: {group.Department}, Count: {group.Count}");
}
এখানে, g.Count()
দ্বারা প্রতিটি বিভাগের সদস্য সংখ্যা বের করা হয়েছে।
List<Person> people = new List<Person>
{
new Person { Name = "Alice", Age = 25, Department = "HR" },
new Person { Name = "Bob", Age = 30, Department = "IT" },
new Person { Name = "Charlie", Age = 35, Department = "HR" },
new Person { Name = "David", Age = 28, Department = "IT" },
new Person { Name = "Eve", Age = 22, Department = "Marketing" }
};
// বিভাগ অনুসারে গ্রুপিং এবং প্রতিটি বিভাগের গড় বয়স বের করা
var groupedByDepartment = people.GroupBy(p => p.Department)
.Select(g => new
{
Department = g.Key,
TotalAge = g.Sum(p => p.Age)
});
foreach (var group in groupedByDepartment)
{
Console.WriteLine($"Department: {group.Department}, Total Age: {group.TotalAge}");
}
এখানে, g.Sum(p => p.Age)
ব্যবহার করে প্রতিটি বিভাগের মোট বয়স বের করা হয়েছে।
List<Person> people = new List<Person>
{
new Person { Name = "Alice", Age = 25, Department = "HR" },
new Person { Name = "Bob", Age = 30, Department = "IT" },
new Person { Name = "Charlie", Age = 35, Department = "HR" },
new Person { Name = "David", Age = 28, Department = "IT" },
new Person { Name = "Eve", Age = 22, Department = "Marketing" }
};
// বিভাগ অনুসারে গ্রুপিং এবং প্রতিটি বিভাগের গড় বয়স বের করা
var groupedByDepartment = people.GroupBy(p => p.Department)
.Select(g => new
{
Department = g.Key,
AverageAge = g.Average(p => p.Age)
});
foreach (var group in groupedByDepartment)
{
Console.WriteLine($"Department: {group.Department}, Average Age: {group.AverageAge}");
}
এখানে, g.Average(p => p.Age)
ব্যবহার করে প্রতিটি বিভাগের গড় বয়স বের করা হয়েছে।
List<Person> people = new List<Person>
{
new Person { Name = "Alice", Age = 25, Department = "HR" },
new Person { Name = "Bob", Age = 30, Department = "IT" },
new Person { Name = "Charlie", Age = 35, Department = "HR" },
new Person { Name = "David", Age = 28, Department = "IT" },
new Person { Name = "Eve", Age = 22, Department = "Marketing" }
};
// বিভাগ অনুসারে গ্রুপিং এবং প্রতিটি বিভাগের সর্বনিম্ন ও সর্বোচ্চ বয়স বের করা
var groupedByDepartment = people.GroupBy(p => p.Department)
.Select(g => new
{
Department = g.Key,
MinAge = g.Min(p => p.Age),
MaxAge = g.Max(p => p.Age)
});
foreach (var group in groupedByDepartment)
{
Console.WriteLine($"Department: {group.Department}, Min Age: {group.MinAge}, Max Age: {group.MaxAge}");
}
এখানে, g.Min(p => p.Age)
এবং g.Max(p => p.Age)
ব্যবহার করে প্রতিটি বিভাগের সর্বনিম্ন এবং সর্বোচ্চ বয়স বের করা হয়েছে।
Group By এবং Aggregation Methods ব্যবহারের মাধ্যমে আপনি ডেটাকে একটি নির্দিষ্ট কন্ডিশনের ভিত্তিতে গ্রুপ করতে এবং পরবর্তীতে প্রতিটি গ্রুপের উপর বিভিন্ন গণনা অপারেশন (যেমন Count, Sum, Average, Min, Max) প্রয়োগ করতে পারেন। এর মাধ্যমে ডেটার উপর আরও গভীর এবং অর্থপূর্ণ বিশ্লেষণ করা সম্ভব।
common.read_more